/******************************************************************************************
Copyright(C), 2019-2021, Linyar.
文件名：L_MPP40_venc.h
作者：燕卫博	版本：V1.0	创建日期：2021.5.27
文件描述：
    头文件。
版本信息：
    9Hv2，个人。
历史修改记录：
1. 2021-8-15:V1.1 燕卫博
从STv9-t拷贝更改。

******************************************************************************************/

#ifndef __L_MPP40_VENC__
#define __L_MPP40_VENC__

//                                              ↓
//+------------------------------------------------------------------------------------------+
//|                                         头文件包含
//+------------------------------------------------------------------------------------------+
/*|*/  #include <stdio.h>       //提供printf等基本输入输出
/*|*/  #include <string.h>      //提供字符串操作函数
/*|*/  #include <stdbool.h>     //提供布尔数据类型
/*|*/  #include <sys/time.h>    //提供时间结构体
/*|*/  #include <unistd.h>      //使用Unix系统服务，例如select
/*|*/  #include "hi_common.h"   //该文件中定义了海思的数据类型
/*|*/  #include "hi_comm_rc.h"  //该文件中定义了RC帧率控制数据类型
/*|*/  #include "hi_comm_isp.h" //使用了该文件中ISP设置相关
/*|*/  #include "hi_math.h"     //使用了ALIGN_UP宏
/*|*/  #include "mpi_sys.h"     //该文件提供了MPI-SYS函数声明
/*|*/  #include "mpi_ae.h"      //该文件提供了MPI-ISP函数声明
/*|*/  #include "mpi_venc.h"    //该文件提供了MPI-VENC函数声明
/*|*/  #include "hi_comm_venc.h"//该文件中定义了VENC相关数据类型
//+------------------------------------------------------------------------------------------+
//                                              ↓
//+------------------------------------------------------------------------------------------+
//|                                          数据类型
//+------------------------------------------------------------------------------------------+
/*|*/  typedef enum hiPIC_SIZE_E
/*|*/  {
/*|*/      PIC_VGA,       /* 640  * 480  */
/*|*/      PIC_720P,      /* 1280 * 720  */
/*|*/      PIC_1080P,     /* 1920 * 1080 */
/*|*/      PIC_2592x1944, /* 2592 * 1944 */
/*|*/      PIC_3840x2160, /* 3840 * 2160 */
/*|*/  }PIC_SIZE_E;
//|
//|    ----------------------------------------
//|    [注意]相比于老版本，在所参考版本的例程中，
//|    无论是H265还是H264编码，均未列出对QCBR和
//|    CVBR码率的设置。考虑到码率的选择并不常用，
//|    则遵循例程。
//|    ----------------------------------------
/*|*/  typedef enum L_VENC_RC
/*|*/  {
/*|*/      RC_CBR=0,
/*|*/      RC_VBR,
/*|*/      RC_AVBR,
/*|*/      RC_QPMAP,
/*|*/      RC_FIXQP,
/*|*/  }RC_MODE;
//|
//|    该结构体用于L_VENC_CreateChnAndStart传参
/*|*/  typedef struct L_VENC_Para
/*|*/  {
/*|*/      VENC_CHN        VencChn;     //创建的VENC通道号
/*|*/      PAYLOAD_TYPE_E  enPayLoad;   //编码荷载类型（PT_H264或PT_H265）
/*|*/      PIC_SIZE_E      enSize;      //编码尺寸
/*|*/      VENC_GOP_MODE_E enGopMode;   //GOP模式
/*|*/      HI_U32          u32Gop;      //GOP间隔，不同模式下GOP间隔表示的含义不同
/*|*/      RC_MODE         enRcMode;    //RC模式
/*|*/      HI_U32          u32FrameRate;//RC输出帧率
//|        ----------------------------------------
//|        关于Profile——编码的等级
//|        H.264取值范围：[0,3]。
//|        0：Baseline。
//|        1：Main Profile。
//|        2：High Profile。
//|        3：svc-t。
//|        H.265取值范围：[0,1]。
//|        0：Main Profile。
//|        1：Main 10 Profile。——Hi3516DV300不支持
//|        Jpeg/Mjpeg取值范围：0
//|        0：Baseline
//|        ——《参考》P1038
//|        ----------------------------------------
/*|*/      HI_U32           u32Profile;
/*|*/      HI_S32           s32FrameNumber;//编码帧数
/*|*/  }VENC_PARA_S;
//+------------------------------------------------------------------------------------------+
//                                              ↓
//+------------------------------------------------------------------------------------------+
//|                                       函数/变量声明
//+------------------------------------------------------------------------------------------+
/*|*/  int  L_VENC_CreateChnForVideo(VENC_PARA_S *pstVENCpara);
/*|*/  void L_VENC_DeInit(VENC_CHN VencChn);
/*|*/  void L_VENC_GetStream(bool *get_stream_enable,
/*|*/                        void (*pStreamFuction)(int i,VENC_STREAM_S *pstStream));
//+------------------------------------------------------------------------------------------+

#endif
